package com.bookstore.dao.impl;

import com.bookstore.dao.BaseDao;
import com.bookstore.dao.UserDao;
import com.bookstore.entity.User;

import java.util.List;

public class UserDaoImpl extends BaseDao implements UserDao {
    @Override
    public int insertUser(User user) {
        String sql = "INSERT INTO `T_user`(`username`,`password`,`gender`,`email`,`telephone`,`introduce`,`activeCode`,`state`,`role`,`registTime`) VALUES (?, ?, ?, ?, ? ,? ,? ,? ,? ,?)";
        return super.update(sql, user.getUsername(),user.getPassword(), user.getGender(), user.getEmail(), user.getTelephone(), user.getIntroduce(), user.getActiveCode(), user.getState(), user.getRole(), user.getRegistTime());
    }

    @Override
    public int updateUser(User user) {
        String sql ="UPDATE `T_user` SET `username`= ?,`password`= ?,`gender`= ?,`email`= ?,`telephone`= ?,`introduce`= ?,`activeCode`= ?,`state`= ?,`role`= ?,`registTime`= ? WHERE `id`=?";
        return super.update(sql,user.getUsername(),user.getPassword(), user.getGender(), user.getEmail(), user.getTelephone(), user.getIntroduce(), user.getActiveCode(), user.getState(), user.getRole(), user.getRegistTime(),user.getId());
    }

    @Override
    public int deleteUser(Long userId) {
        String sql = "DELETE FROM `T_user`WHERE `id`=?";
        return super.update(sql,userId);
    }

    @Override
    public User queryUserByUsername(String username) {
        String sql = "SELECT * FROM `T_user`WHERE `username`=?";
        return super.queryForOne(User.class, sql,username);
    }

    @Override
    public User queryUserByUsernameAndPassword(User user) {
        String sql = "SELECT * FROM `T_user`WHERE `username`=? AND `password`=?";
        return super.queryForOne(User.class, sql,user.getUsername(),user.getPassword());
    }

    @Override
    public List<User> queryAllUsers() {
        String sql = "SELECT * FROM `T_user`";
        return super.queryForList(User.class, sql);
    }

    @Override
    public User queryUserById(Long userId) {
        String sql = "SELECT * FROM `T_user`WHERE `id`=? ";
        return super.queryForOne(User.class, sql,userId);
    }
//    @Override
//    public int insert(User user) {
//        String sql = "INSERT INTO `T_user`(`username`,`password`,`gender`,`email`,`telephone`,`introduce`,`activeCode`,`state`,`role`,`registTime`) VALUES (?, ?, ?, ?, ? ,? ,?,?,?,?)";
//        return 0;
//    }
//
//    @Override
//    public int delete(Integer userId) {
//        String sql = "DELETE FROM `T_user`WHERE `id`=?";
//        return 0;
//    }
//
//    @Override
//    public int update(User user) {
//        int result = 0;
//        String sql = "UPDATE `T_user`SET";
//        StringBuilder sb = new StringBuilder(sql);
//        int flag=0;
//        if(user==null){
//            return result;
//        }
//        if(user.getUsername()!=null){
//            flag=1;
//            sb.append(" `username`=?");
//        }
//        if(user.getPassword()!=null){
//            if(flag!=0){
//                sb.append(",");
//            }
//            sb.append(" `password`=?");
//            flag=1;
//        }
//        if(user.getGender()!=null){
//            if(flag!=0){
//                sb.append(",");
//            }
//            sb.append(" `gender`=?");
//            flag=1;
//        }
//        if(user.getEmail()!=null){
//            if(flag!=0){
//                sb.append(",");
//            }
//            sb.append(" `email`=?");
//            flag=1;
//        }
//        if(user.getTelephone()!=null){
//            if(flag!=0){
//                sb.append(",");
//            }
//            sb.append(" `telephone`=?");
//            flag=1;
//        }
//        if(user.getIntroduce()!=null){
//            if(flag!=0){
//                sb.append(",");
//            }
//            sb.append(" `introduce`=?");
//            flag=1;
//        }
//        if(user.getActiveCode()!=null){
//            if(flag!=0){
//                sb.append(",");
//            }
//            sb.append(" `activeCode`=?");
//            flag=1;
//        }
//        if(user.getState()!=null){
//            if(flag!=0){
//                sb.append(",");
//            }
//            sb.append(" `state`=?");
//            flag=1;
//        }
//        if(user.getRole()!=null){
//            if(flag!=0){
//                sb.append(",");
//            }
//            sb.append(" `role`=?");
//            flag=1;
//        }
//        return 0;
//    }
//
//    @Override
//    public List<User> queryUser(User user) {
//        String sql = "SELECT * FROM `T_user`WHERE  1=1";
//        StringBuilder sb = new StringBuilder(sql);
//        if(user.getId()!=null){
//            sb.append(" AND `id`=?");
//        }
//        if(user.getUsername()!=null){
//            sb.append(" AND `username`=?");
//        }
//        if(user.getPassword()!=null){
//            sb.append(" AND `password`=?");
//        }
//        if(user.getGender()!=null){
//            sb.append(" AND `gender`=?");
//        }
//        if(user.getEmail()!=null){
//            sb.append(" AND `email`=?");
//        }
//        if(user.getTelephone()!=null){
//            sb.append(" AND `telephone`=?");
//        }
//        if(user.getIntroduce()!=null){
//            sb.append(" AND `introduce`=?");
//        }
//        if(user.getActiveCode()!=null){
//            sb.append(" AND `activeCode`=?");
//        }
//        if(user.getState()!=null){
//            sb.append(" AND `state`=?");
//        }
//        if(user.getRole()!=null){
//            sb.append(" AND `role`=?");
//        }
//        if(user.getRegistTime()!=null){
//            sb.append(" AND `registTime`=?");
//        }
//        return null;
//    }
}
